//
// Created by 11510 on 2024/6/16.
//
#include <iostream>
#include <regex>
#include <string>
using namespace std;
std::string removeNestedTags(const std::string& input) {
    std::string output;
    bool inTag = false;
    for (char ch : input) {
        if (ch == '<') {
            inTag = true;
        } else if (ch == '>') {
            inTag = false;
        } else if (!inTag) {
            output += ch;
        }
    }
    return output;
}

int main(){
    std::string page = R"(
    <p>今天跟大家分享一个etcd的内存大量占用的问题，这是前段时间在我们开源软件Easegress中遇到的问题，问题是比较简单的，但是我还想把前因后果说一下，包括，为...</p>
    <p class="read-more"><a class="btn btn-default" href="https://coolshell.cn/articles/22242.html"> Read More<span class="screen-reader-text">  Read More</span></a></p>
    The post <a href="https://coolshell.cn/articles/22242.html">ETCD的内存问题</a> first appeared on <a href="https://coolshell.cn">酷 壳 - CoolShell</a>.
    <p>写这篇文章的原因主要还是因为V2EX上的这个贴子，这个贴子中说—— “对接同事的接口，他定义的所有接口都是 post 请求，理由是 https 用 post 更...</p>
    )";

    regex reg(R"(<(\S*?)[^>]*>.*?</\1>|<.*? />)");
    smatch matches;

    auto pageBegin = sregex_iterator(page.begin(), page.end(), reg);
    auto pageEnd = sregex_iterator();

    for (sregex_iterator i = pageBegin; i != pageEnd; ++i) {
        string match = i->str();
        std::string cleanedContent = removeNestedTags(match);
        std::cout << cleanedContent << std::endl;
//        cout << i->str() << endl;
    }


}